Customized console prompt and bugfixes | This Week in Rails
railties に関する変更です
rails console に現在のRAILS_ENVが表示されるようになりました
code:txt
dev:001> # for RAILS_ENV=development
test:001> # for RAILS_ENV=test
prod:001> # for RAILS_ENV=production
my_env:001> # for RAILS_ENV=my_env
devとtestは緑色、prodは赤色になります
独自のRAILS_ENVの場合はカラーの変更はなし(デフォルトカラー)のようです
(tanakenがコードを読んだ限りでは)
ActiveStorageに関する変更です
※収録した音声では「ActiveRecordに関する変更です」と発言していますが言い間違いです
これを使うことで、動画データの幅、高さ、秒数、回転角度、アスペクト比、音声チャネルの有無、映像チャネルの有無を抽出できます。 code:rb
module ActiveStorage
# = Active Storage Video \Analyzer
#
# Extracts the following from a video blob:
#
# * Width (pixels)
# * Height (pixels)
# * Duration (seconds)
# * Angle (degrees)
# * Display aspect ratio
# * Audio (true if file has an audio channel, false if not)
# * Video (true if file has an video channel, false if not)
このプルリクエストでは、回転角度が期待通りに抽出できない場合がある、という問題を修正しています
具体的には、iPhoneのポートレートモードで撮影した1920x1080の動画を90度回転させ、その動画ファイルをVideoAnalyzerで分析したところ、1080x1920で無回転の動画である、という結果になってしまう、という問題がありました
どうやら動画ファイルのメタデータとして side_data というものがあるようで、side_data にはいくつかのタイプがあるようです。そのなかでも "Display Matrix" というタイプの side_data を用いることで、回転角度を正しく取得できるように修正しています。
検証につかった動画(iPhoneのポートレートモードで撮影したもの)は "DOVI configuration record" というタイプの side_data が一番最初にあり、修正前のロジックでは一番最初の side_data を使っていたので、回転角度を取得できていなかった、とのことでした
「ネストされた関連付けの書き込みに無効な引数を渡したとき、一貫して ArgumentError が発生するようにした」
ActiveRecordに関する変更です
accepts_nested_attributes_for というメソッドがあります
親のモデルを経由して関連モデルのレコードを保存できる、という機能です
code:rb
class Book < ActiveRecord::Base
has_one :author
has_many :pages
accepts_nested_attributes_for :author, :pages
end
単一な関連(author)も複数な関連(pages)も指定できます
今回のプルリクエストの修正前は、accepts_nested_attributes_forの属性に無効な引数を渡したとき、
複数な関連の属性では ArgumentError が発生しますが、
code:rb
Book.create!(pages_attributes: "foo") # raise ArgumentError
単一な関連の属性では ArgumentError が発生しませんでした
code:rb
Book.create!(author_attributes: "bar") # raise NoMethodError: undefined method `with_indifferent_access' for "bar":String
今回の修正後は、単一な関連の属性でも ArgumentError が発生するようになりました
一貫性があって良いですね